/*
 * Copyright (C) 2009 2DAI
 *
 * Este programa es Software Libre; usted puede redistribuirlo
 * y/o modificarlo bajo los términos de la "GNU General Public
 * License" como lo publica la "FSF Free Software Foundation",
 * o (a su elección) de cualquier versión posterior.
 *
 * Este programa es distribuido con la esperanza de que le será
 * útil, pero SIN NINGUNA GARANTIA; incluso sin la garantía
 * implícita por el MERCADEO o EJERCICIO DE ALGUN PROPOSITO en
 * particular. Vea la "GNU General Public License" para más
 * detalles.
 *
 * Usted debe haber recibido una copia de la "GNU General Public
 * License" junto con este programa, si no, escriba a la "FSF
 * Free Software Foundation, Inc.", 59 Temple Place - Suite 330,
 * Boston, MA  02111-1307, USA.
 */
package gui;

import java.awt.GraphicsEnvironment;
import java.awt.Window;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import javax.swing.JProgressBar;
import logic.SplashLogic;

/**
 *
 * Author: Pablo Martinez Piles
 * Author: Jorge Garrido Oval
 * El splash de la aplicación, muestra el proceso de carga al iniciar
 * al aplicación.
 */
public class Splash extends javax.swing.JWindow {

    /** Creates new form Splash */
    public Splash(java.awt.Frame parent, boolean modal,SplashLogic logica) {
        //super(parent, modal);
        super(GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration());
        initComponents();
        this.setSize(400, 300);
        //setVisible(true);
        this.addPropertyChangeListener(logica);
        setLocationRelativeTo(null);
        this.aparecer();
    }

    /**
     * Método que muestra la ventana progresivamente.
     */
    private void aparecer() {
        Method mSetWindowOpacity = null;
            try {
               Class<?> awtUtilitiesClass = Class.forName("com.sun.awt.AWTUtilities");
               mSetWindowOpacity = awtUtilitiesClass.getMethod("setWindowOpacity", Window.class, float.class);
            } catch (NoSuchMethodException ex) {
                ex.printStackTrace();
            } catch (SecurityException ex) {
                ex.printStackTrace();
            } catch (ClassNotFoundException ex) {
                ex.printStackTrace();
            } catch (IllegalArgumentException ex) {
                ex.printStackTrace();
            }
            try {
                float a =  0.01f;
                mSetWindowOpacity.invoke(null, this, Float.valueOf(a));
                setVisible(true);
                while(a<1){
                    Thread.sleep(10);
                    mSetWindowOpacity.invoke(null, this, Float.valueOf(a));
                    a = a+ 0.01f;
                }
            } catch (InterruptedException ex) {
                //Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                //Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalArgumentException ex) {
                //Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InvocationTargetException ex) {
                //Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
            }
    }

    public JProgressBar getJProgressoBarra() {
        return jProgresoBarra; 
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        JLestado = new javax.swing.JLabel();
        jProgresoBarra = new javax.swing.JProgressBar();
        JLfondo = new javax.swing.JLabel();

        setAlwaysOnTop(true);
        getContentPane().setLayout(null);

        JLestado.setFont(new java.awt.Font("DialogInput", 1, 12)); // NOI18N
        JLestado.setForeground(new java.awt.Color(255, 255, 255));
        getContentPane().add(JLestado);
        JLestado.setBounds(5, 210, 380, 20);

        jProgresoBarra.setFont(new java.awt.Font("Tahoma", 1, 14));
        jProgresoBarra.setForeground(new java.awt.Color(0, 0, 153));
        jProgresoBarra.setBorderPainted(false);
        jProgresoBarra.setStringPainted(true);
        getContentPane().add(jProgresoBarra);
        jProgresoBarra.setBounds(0, 230, 400, 30);

        JLfondo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/img/Sport_PingPong copia.png"))); // NOI18N
        getContentPane().add(JLfondo);
        JLfondo.setBounds(0, 0, 400, 300);

        pack();
    }// </editor-fold>//GEN-END:initComponents
    /**
    * @param args the command line arguments
    */
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JLabel JLestado;
    private javax.swing.JLabel JLfondo;
    private javax.swing.JProgressBar jProgresoBarra;
    // End of variables declaration//GEN-END:variables

    /**
     * @param estado the estado to set
     */
    public void setEstado(String estado) {
        this.JLestado.setText(estado);
    }
}
